import { fileURLToPath, URL } from 'node:url';
import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import { VantResolver } from '@vant/auto-import-resolver';
import legacy from '@vitejs/plugin-legacy';

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
  // 根据当前模式加载环境变量
  const env = loadEnv(mode, process.cwd());
  console.log('== 当前环境 ==', env.VITE_ENV);

  const isDev = mode === 'development';

  return {
    base: isDev ? '/' : './', // 开发环境使用根路径，生产环境使用相对路径
    plugins: [
      vue(),
      AutoImport({
        imports: ['vue', 'vue-router'],
        resolvers: [VantResolver()],
        dts: './auto-imports.d.ts',
      }),
      Components({
        resolvers: [VantResolver()],
        extensions: ['vue'], // 组件的有效文件扩展名。
        dts: './components.d.ts', // 配置文件生成位置-自动生成
        deep: true, // 搜索子目录
      }),
      legacy({
        targets: ['defaults', 'not IE 11'],
      }),
    ],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url)),
      },
    },
    server: {
      host: '0.0.0.0',
      port: 1234,
      ...(isDev ? { // 仅在开发环境中添加代理配置
        proxy: {
          '/api': {
            target: env.VITE_API_BASE_URL, // 动态加载代理目标地址
            changeOrigin: true,
            rewrite: (path) => path.replace(/^\/api/, '') // 去除路径中的 /api 前缀
          },
        },
      } : {}),
    },
    // build: {
    //   outDir: mode === 'production' ? 'dist' : `dist-${mode}`,
    // },
  };
});